package cx.mybatis.session;

/**
 * 定义了处理sql的一些约定
 * @Author:cxy
 * @Date:2022/4/9 10:37
 */
public interface SqlSession {

    /**
     * Retrieve a single row mapped from the statement key.
     * 根据指定sqlID获取一条记录的封装对象
     *
     * @param <T> the returned object type 封装对象后的返回类型
     * @param statement sqlId
     * @return Mapped object 封装之后的对象
     */
    <T> T selectOne(String statement);

    /**
     * Retrieve a single row mapped from the statement key.
     * 根据指定sqlID获取一条记录的封装对象 方法允许传入一些参数对象
     *
     * @param <T> the returned object type 封装对象后的返回类型
     * @param statement sqlId
     * @param parameter 参数
     * @return Mapped object 封装之后的对象
     */
    <T> T selectOne(String statement,Object parameter);

    /**
     * Retrieves a mapper.
     * 获取绑定了此sqlSession的Mapper
     *
     * @param <T> the mapper type
     * @param type Mapper interface class
     * @return a mapper bound to this SqlSession
     */
    <T> T getMapper(Class<T> type);

}
